import { ERMICallModel } from "./ERMICallModel";
import { SerializeStream } from "../../Framework/Serialize/SerializeStream";
import { MarshalException } from "./MarshalException";
type int = number;
//class ERMIDispatchStatus
// did
export class ERMIDispatchStatus {
  constructor(code: int) {
    this.__value = code;
    ERMIDispatchStatus.__values[code] = this;
  }

  public value(): int {
    return this.__value;
  }

  public toString(): string {
    return ERMIDispatchStatus.__T[this.__value];
  }

  public equals(arg1: any): Boolean {
    if (this == arg1) {
      return true;
    }
    var loc1 = arg1 as ERMICallModel;
    if (loc1 == null) {
      return false;
    }
    return this.__value == loc1.value();
  }

  public hashCode(): int {
    return 5 * this.__value;
  }

  public __write(stream: SerializeStream): void {
    stream.writeByte(this.__value);
    return;
  }

  public static convert(code: int): ERMIDispatchStatus {
    return ERMIDispatchStatus.__values[code];
  }

  public static __read(arg1: SerializeStream): ERMIDispatchStatus {
    var loc1 = arg1.readByte();
    if (loc1 < 0 || loc1 >= 6) {
      throw new MarshalException();
    }
    return ERMIDispatchStatus.convert(loc1);
  }

  private static /* const */ __T: Array<any> = [
    "ERMIDispatchStatus.DispatchOK",
    "ERMIDispatchStatus.DispatchTimeOut",
    "ERMIDispatchStatus.DispatchException",
    "ERMIDispatchStatus.DispatchObjectNotExist",
    "ERMIDispatchStatus.DispatchOperationNotExist",
    "ERMIDispatchStatus.DispatchAsync"
  ];

  private static /* var */ __values: Array<ERMIDispatchStatus> = [];

  public static /* const */ _DispatchOK: int = 0;

  public static /* const */ DispatchOK: ERMIDispatchStatus = new ERMIDispatchStatus(
    ERMIDispatchStatus._DispatchOK
  );

  public static /* const */ _DispatchTimeOut: int = 1;

  public static /* const */ DispatchTimeOut: ERMIDispatchStatus = new ERMIDispatchStatus(
    ERMIDispatchStatus._DispatchTimeOut
  );

  public static /* const */ _DispatchException: int = 2;

  public static /* const */ DispatchException: ERMIDispatchStatus = new ERMIDispatchStatus(
    ERMIDispatchStatus._DispatchException
  );

  public static /* const */ _DispatchObjectNotExist: int = 3;

  public static /* const */ DispatchObjectNotExist: ERMIDispatchStatus = new ERMIDispatchStatus(
    ERMIDispatchStatus._DispatchObjectNotExist
  );

  public static /* const */ _DispatchOperationNotExist: int = 4;

  public static /* const */ DispatchOperationNotExist: ERMIDispatchStatus = new ERMIDispatchStatus(
    ERMIDispatchStatus._DispatchOperationNotExist
  );

  public static /* const */ _DispatchAsync: int = 5;

  public static /* const */ DispatchAsync: ERMIDispatchStatus = new ERMIDispatchStatus(
    ERMIDispatchStatus._DispatchAsync
  );

  public /* var */ __value: int;
}
